springboot生成接口文档

您所在的位置:网站首页 markdown 怎么打开 springboot生成接口文档

springboot生成接口文档

2023-06-13 08:41| 来源: 网络整理| 查看: 265

当我们在使用Spring MVC写接口的时候,为了生成API文档,为了方便整合Swagger,都是用这个SpringFox的这套封装。但是,自从2.9.2版本更新之后,就一直没有什么动静,也没有更上Spring Boot的大潮流,有一段时间还一直都是写个配置类来为项目添加文档配置的。为此,之前就造了这么个轮子: 也没什么难度,就是造的早,所以得到了不少Star。现在SpringFox出了一个starter,看了一下功能,虽然还不完美,但相较于之前我们自己的轮子来说还是好蛮多的。来看看这个版本有些什么亮点:

Spring 5,Webflux 支持(仅请求映射支持,尚不支持功能端点) Spring Integration 支持 Spring Boot 支持 springfox-boot-starter 依赖性(零配置,自动配置支持) 具有自动完成功能的文档化配置属性 更好的规范兼容性 支持 OpenApi 3.0.3 几乎零依赖性(唯一需要的库是 spring-plugin、pswagger-core) 现有的 swagger2 注释将继续有效,并丰富 open API 3.0 规范 对于这次的更新,我觉得比较突出的几点:Webflux的支持,目前的轮子就没有做到;对OpenApi 3的支持;以及对Swagger 2的兼容(可以比较方便的做升级了)。

错误行代码: Cause by: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException错误原因:Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher解决方案: 1.简单粗暴:升级spring-boot-starter-parent版本

          org.springframework.boot         spring-boot-starter-parent         2.5.6            

2.高级感:在application.yaml里配置:spring.mvc.pathmatch.matching-strategy: ANT_PATH_MATCHER

spring: mvc: pathmatch: matching-strategy: ant_path_matcher

接下来进入主题:上手

第一步导入依赖

io.springfox springfox-boot-starter 3.0.0 com.github.xiaoymin swagger-bootstrap-ui 1.9.6

第二步在主启动类开启支持

 访问http://localhost:8080/doc.html即可 默认ui就是bootstarp-ui。

可以添加自定义设置 @Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() //为当前包下的controller生成api文档 .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { //设置文档信息 return new ApiInfoBuilder() .title("小7接口文档") .description("小7接口文档") .contact(new Contact("李佳琪", "http:localhost:8080/doc.html", "[email protected]")) .version("1.0") .build(); } /** * 解决swagger在springboot2.7以后的空指针异常 */ @Bean public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() { return new BeanPostProcessor() { @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) { customizeSpringfoxHandlerMappings(getHandlerMappings(bean)); } return bean; } private void customizeSpringfoxHandlerMappings(List mappings) { List copy = mappings.stream() .filter(mapping -> mapping.getPatternParser() == null).toList(); mappings.clear(); mappings.addAll(copy); } @SuppressWarnings("unchecked") private List getHandlerMappings(Object bean) { try { Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings"); assert field != null; field.setAccessible(true); return (List) field.get(bean); } catch (IllegalArgumentException | IllegalAccessException e) { throw new IllegalStateException(e); } } }; } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3